
import Tip from '@/components/Tip';
import CheckboxAll from '@/components/CheckboxAll';
import CustomDialog from '@/components/customDialog';
import ElRangeInput from '@/components/ElRangeInput';

// mixins
import resetForm from '@/mixins/resetForm';
import form from '@/mixins/form';
import grid from '@/mixins/grid';
import dialog from '@/mixins/dialog';
import factory from '@/mixins/factory';
import pickerOption from '@/mixins/pickerOptions';
import tabs from '@/mixins/tabs';
import constsLabel from '@/mixins/constsLabel';
import handleDownload from '@/mixins/handleDownload';
import switchData from '@/mixins/switchData';


import waves from '@/directive/waves';
import qriously from 'vue-qriously';

import transferDom from '@/directive/transfer-dom';
import roleCheck from '@/plugins/roleCheck';

// import Tree from '@/components/Tree/Tree';

const components = [
  Tip,
  CustomDialog,
  CheckboxAll,
  ElRangeInput,
];

const install = (Vue) => {
  components.map((component) => {
    Vue.component(component.name, component);
  });

  waves.install(Vue);
  Vue.directive('transferDom', transferDom);
  Vue.use(roleCheck);
  Vue.use(qriously);
};

export {
  install,

  factory,
  // mixins
  resetForm,
  form,
  dialog,
  grid,
  pickerOption,
  tabs,
  constsLabel,
  handleDownload,
  switchData
  // validator
};
